package com.aliang.shopping.model.converter;

import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.aliang.shopping.model.dto.comment.CommentInsertDTO;
import com.aliang.shopping.model.dto.common.UpdateStatusDTO;
import com.aliang.shopping.model.po.Comment;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;

import java.util.List;


/**
 * 评论数据转换器
 */
@Mapper(componentModel = "Spring")
public interface CommentConverter {

    default String getImageJson(List<String> imageList, String basicUrl) {
        if (imageList.isEmpty())
            return "[]";
        imageList.forEach(
                // 将图片地址转换为相对地址
                image -> StrUtil.subAfter(image, basicUrl, false)
        );
        //返回字符串
        return JSONUtil.toJsonStr(imageList);
    }

    /**
     * 将评论插入数据传输对象转换为评论实体
     *
     * @param insertDTO
     * @return
     */
    @Mapping(target = "commentImage", expression = "java(getImageJson(insertDTO.getCommentImageList(),basicUrl))")
    Comment toPoByInsertDTO(CommentInsertDTO insertDTO, String basicUrl);


    /**
     * 将评论更新状态数据传输对象转换为评论实体
     *
     * @param updateDTO
     * @return
     */
    Comment toPoByUpdateStaticDTO(UpdateStatusDTO updateDTO);


}
